/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package menus;

import bitclub.BitUtil;
import bitclub.Trabajador;
import java.util.Date;

/**
 *
 * @author JAVA
 */
public class OpcionesTrabajadores {

    /**
     * Da de alta un trabajador
     */
    public static void opcionTrabajadoresDarAlta() {
        Trabajador currante;
        BitUtil.borra();

        //Cogemos todos los datos uno a uno
        System.out.println("NUEVO TRABAJADOR");
        System.out.println("--------------------");
        String nombre = BitUtil.dameCadena("Nombre: ");
        String apellidos = BitUtil.dameCadena("Apellidos: ");
        String dni = BitUtil.dameDni("DNI: ");
        String mail = BitUtil.dameCadena("E-mail: ");
        String telFijo = BitUtil.dameCadena("Tel. Fijo: ");
        String telMovil = BitUtil.dameCadena("Tel. Movil: ");
        String direccion = BitUtil.dameCadena("Dirección: ");
        String cp = BitUtil.dameCadena("Codigo postal: ");
        String localidad = BitUtil.dameCadena("Localidad: ");
        Date fechaNacimiento = BitUtil.dameFecha("Fecha nacimiento: ");
        char sexo = BitUtil.dameCadena("Sexo: (hombre/mujer): ").charAt(0);
        Date fechaAlta = new Date();
        Date fechaBaja = null;
        String password = BitUtil.dameCadena("Password: ");
        boolean admin = BitUtil.dameConfirmacion("¿Es administrador? [si/no]");


        //Creamos el cliente con todos los datos recopilados
        Trabajador temp = new Trabajador(nombre, apellidos, dni, true, mail, telFijo, telMovil, direccion, cp, localidad, fechaNacimiento, sexo, fechaAlta, fechaBaja, password, admin);

        //Borramos pantalla, mostramos el trabajador completo y pedimos confirmación
        BitUtil.borra();
        System.out.println(temp.toString());
        boolean confirmado = BitUtil.dameConfirmacion("Dar de alta este trabajador? (s/n) ");
        String guardo = temp.toString();
        System.out.println(guardo);
        //Si confirmamos pedimos al objeto que se guarde y si no lo descartamos
        if (confirmado) {
            temp.nuevo();
            System.out.println("El trabajador se ha almacenado correctamente (supongo)");
            BitUtil.esperaEnter();

        } else {
            System.out.println("El trabajador ha sido descartado");
            BitUtil.esperaEnter();

        }
    }

    /**
     * Ver datos de trabajador
     * @param trabajador 
     */
    public static void opcionTrabajadoresVer(Trabajador trabajador) {
        System.out.println(trabajador.toString());
        BitUtil.esperaEnter();
    }

    /**
     * Edita los datos de un trabajador
     */
    public static void opcionTrabajadoresEditar(Trabajador Tr1) {

        //Atributos
        String opciones[] = {"Nombre", "Apellidos", "DNI", "Email", "Tel_fijo", "Tel_movil", "Dirección", "C.P.", "Localidad", "Fech_Nacimiento", "Sexo", "Fech_Alta", "Fech_Baja", "Password"};

        String seguir_editando = ""; // esta variable decide si seguimos editando o no

        String modificar_con = ""; // esta variable almacena el nuevo valor para el campo a editar

        char mod_sexo = 'H'; // variable para almacenar el carácter relativo al sexo

        do {
            //Mostrando el menú para editar al cliente
            BitUtil.borra();
            int respuesta = BitUtil.muestraMenu("EDITAR TRABAJADOR", opciones); // NO COMMENT
            //Opciones disponibles:
            switch (respuesta) {

                case 1://Opción 1
                    System.out.println("Introduzca el nuevo Nombre de " + Tr1.getNombre() + "\n");
                    modificar_con = BitUtil.dameCadena(modificar_con);
                    Tr1.setNombre(modificar_con);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 2://Opción 2
                    System.out.println("Introduzca los nuevos apellidos de " + Tr1.getApellidos() + "\n");
                    modificar_con = BitUtil.dameCadena(modificar_con);
                    Tr1.setApellidos(modificar_con);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 3://Opción 3
                    System.out.println("Introduzca el nuevo DNI " + Tr1.getDni() + "\n");
                    modificar_con = BitUtil.dameEnteroFijo("8 cifras sin la letra", 8);
                    Tr1.setDni(modificar_con);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 4://Opción 4
                    boolean respu;
                    do {
                        System.out.println("Introduzca el nuevo email " + Tr1.getMail() + "\n");
                        modificar_con = BitUtil.dameCadena(seguir_editando);
                        respu = BitUtil.checkMail(modificar_con);
                    } while (respu != true);

                    Tr1.setMail(modificar_con);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 5://Opción 5
                    System.out.println("Introduzca el nuevo Teléfono fijo " + Tr1.getTel_fijo() + "\n");
                    modificar_con = BitUtil.dameEnteroFijo("9 cifras", 9);
                    Tr1.setTel_fijo(modificar_con);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 6://Opción 6
                    System.out.println("Introduzca el nuevo móvil " + Tr1.getTel_movil() + "\n");
                    modificar_con = BitUtil.dameEnteroFijo("9 cifras", 9);
                    Tr1.setTel_movil(modificar_con);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 7://Opción 7
                    System.out.println("Introduzca la nueva dirección " + Tr1.getDireccion() + "\n");
                    modificar_con = BitUtil.dameCadena(modificar_con);
                    Tr1.setDireccion(modificar_con);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 8://Opción 8
                    System.out.println("Introduzca el nuevo Código Postal " + Tr1.getCodigoPostal() + "\n");
                    modificar_con = BitUtil.dameEnteroFijo("Número de cinco cifras", 5);
                    Tr1.setCodigoPostal(modificar_con);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 9://Opción 9
                    System.out.println("Introduzca la nueva localidad " + Tr1.getLocalidad() + "\n");
                    modificar_con = BitUtil.dameCadena(modificar_con);
                    Tr1.setLocalidad(modificar_con);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 10://Opción 10

                    Date nueva_fecha = BitUtil.dameFecha("Introduce la nueva fecha " + Tr1.getNacimiento() + "\n");
                    Tr1.setNacimiento(nueva_fecha);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 11://Opción 11
                    System.out.println("Introduzca el nuevo sexo " + Tr1.getSexo() + "\n");
                    char[] miChar;
                    miChar = BitUtil.dameCadena(modificar_con).toCharArray();
                    mod_sexo = miChar[0];
                    Tr1.setSexo(mod_sexo);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 12://Opción 12
                    Date nueva_fecha2 = BitUtil.dameFecha("Introduce la nueva fecha " + Tr1.getFechaAlta() + "\n");
                    Tr1.setFechaAlta(nueva_fecha2);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 13://Opción 13
                    Date nueva_fecha3 = BitUtil.dameFecha("Introduce la nueva fecha " + Tr1.getFechaBaja() + "\n");
                    Tr1.setFechaBaja(nueva_fecha3);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;

                case 14://Opción 14
                    System.out.println("Introduzca la nueva contraseña " + Tr1.getPassword() + "\n");
                    modificar_con = BitUtil.dameCadena(modificar_con);
                    Tr1.setPassword(modificar_con);
                    System.out.println("¿Desea seguir editando?[Y/N]");
                    seguir_editando = BitUtil.dameCadena(seguir_editando);
                    break;


                case 0:
                    //Aqui debería SALIR del menú editar Trabajador   ATENCION VER ESTO

                    //Pedimos confirmación para sobreescribir los datos
                    Boolean resp = BitUtil.dameConfirmacion("¿Descartar todos los cambios? [Y/N]");
                    //Descartamos todos los cambios realizados o confirmamos dichos cambios
                    if (resp == true) {
                        System.out.println("Se han descartado los cambios");
                    } else {
                        Tr1.actualizar();
                        System.out.println("Los cambios se han guardado con éxito");
                        BitUtil.esperaEnter();

                    }

                    break;
                default://EN OTRO CASO
                    System.out.println("Por favor introduzca una de las opciones posibles, gracias");
                    break;
            }
        } while (seguir_editando.equals("Y") || seguir_editando.equals("y"));//CONDICION DE SALIDA

        //Limpiamos la pantalla
        BitUtil.borra();

        //Mostramos la ficha del trabajador editado
        System.out.println(Tr1.toString());

        //Pedimos confirmación para sobreescribir los datos
        Boolean resp = BitUtil.dameConfirmacion("¿Está de acuerdo con las modificaciones del Trabajador?");
        //Descartamos todos los cambios realizados o confirmamos dichos cambios
        if (resp == true) {
            Tr1.actualizar();
            System.out.println("Los cambios se han guardado con éxito");
            BitUtil.esperaEnter();
        } else {
            System.out.println("Se han descartado los cambios");
        }
    }

    /**
     * Da de baja un trabajador o de alta si ya estaba de baja
     * @param trabajador 
     */
    public static void opcionTrabajadoresDarBaja(Trabajador trabajador) {
        boolean baja;
        if (trabajador.isActivo()) {
            System.out.println("Este trabajador está activo.");
            baja = BitUtil.dameConfirmacion("Quiere darle de baja? (S/N) ");
            if (baja) {
                trabajador.setFechaBaja(new Date());
                trabajador.setActivo(false);
                trabajador.actualizar();
                System.out.println("El trabajador ha sido dado de baja.");
                BitUtil.esperaEnter();
            }
        } else {
            System.out.println("Este trabajador no está activo.");
            baja = BitUtil.dameConfirmacion("Quiere darle de alta? (S/N) ");
            if (baja) {
                trabajador.setFechaAlta(new Date());
                trabajador.setActivo(true);
                trabajador.actualizar();
                System.out.println("El trabajador ha sido dado de alta.");
                BitUtil.esperaEnter();
            }
        }
    }
}
